import java.util.Arrays;
import java.util.SplittableRandom;

/**
 * Created with IntelliJ IDEA
 * Description:String学习
 * User:22954
 * Date:2024-01-14
 * Time:15:46
 */
class Student{
    public String name;
    public int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Test1 {
    public static void main(String[] args) {
        String string="abcdef";
        System.out.println(string.endsWith("def"));
        System.out.println(string.endsWith("defg"));
        System.out.println(string.startsWith("ab"));
    }
    public static void main10(String[] args) {
        String string="  hello world      ";
        System.out.print(string);
        System.out.println("ppp");
        /**
         * trim()只去除字符串首位的空格，中间不管
         */
        String ret=string.trim();
        System.out.print(ret);
        System.out.println("ppp");
    }
    public static void main9(String[] args) {
        String string="helloworld";
        String string1=string.substring(2);
        System.out.println(string1);
        String string2=string.substring(1,5);//[1,5)
        System.out.println(string2);
    }
    public static void main8(String[] args) {
        String string="12.34.56";
        /**
         * split()的参数是一个正则表达式
         * "."在正则表达式中为识别除"\n""\t"外所有单个字符
         * "\"转义正则中的.为转义的"\."
         * 再用"\"转义"\."为我们希望识别的字符"."
         * 所以要识别".",需要输入"\\."
         *
         */
        String[]strings=string.split("\\.");
        System.out.println(Arrays.toString(strings));

        String string1="123\\456\\789";
        /**
         * 同理
         * 原字符串中的"\"转义"\"，故若想表达数字字符，不可能存在"\"单独出现
         * split中可视为"\\ \\"
         *
         */
        String[]strings1=string1.split("\\\\");
        System.out.println(Arrays.toString(strings1));
//        String[]strings2=strings1.split("/");  //一个字符串只能被split一次,但是可以将已分割的字符串再次分割

        String string2="zhangsan&18=lisi";
        /**
         * 多个分隔符之间用"|"隔开
         */
        String[]strings2=string2.split("&|=");
        System.out.println(Arrays.toString(strings2));
    }
    public static void main7(String[] args) {
        String string="zhangsan&lisi&wangwu";
        String[] strings1=string.split("&");
        System.out.println(Arrays.toString(strings1));
        String[] strings2=string.split("&",2);
        System.out.println(Arrays.toString(strings2));

    }
    public static void main6(String[] args) {
        String string="ababcabcdef";
        String ret1=string.replace('a','A');
        System.out.println(ret1);

        String ret2=string.replace("abc","ABC");
        System.out.println(ret2);

        /**
         * replaceAll()的第一个参数会被识别为正则表达式
         * replace()的第一个参数只会认为是字符/字符串
         */
        String ret3=string.replaceAll(".","AB");
        String ret4=string.replace("abc","AB");
        System.out.println(ret3);
        System.out.println(ret4);
    }
    public static void main5(String[] args) {
        /**
         * 按格式化输入字符串
         */
        String string=String.format("%d,%c+%d",12,'a',34);
        System.out.println(string.toString());
    }
    public static void main4(String[] args) {
        /**
         * 字符串的大小写转换只关注英文字符，其他字符不会改变
         */
        String str1="abcdEF小";
        String ret1=str1.toUpperCase();
        System.out.println(ret1);

        String str2="ABCDef大";
        String ret2=str2.toLowerCase();
        System.out.println(ret2);

        System.out.println("==============");
        /**
         * 字符串转化为字符数组
         */
        char[] arr=str2.toCharArray();
        System.out.println(Arrays.toString(arr));
    }
    public static void main3(String[] args) {
        String str1=String.valueOf(123);
        System.out.println(str1);
        String str2=String.valueOf(true);
        System.out.println(str2);
        String str3=String.valueOf(new Student("zhangsan",18));//转化的是对象的toString
        System.out.println(str3);

        System.out.println("=====================");

        int a=Integer.parseInt("123");
        System.out.println(a);
        double b=Double.parseDouble("12.34");
        System.out.println(b);
    }
    public static void main2(String[] args) {
        String string="abcdef";
        for (int i = 0; i < string.length(); i++) {
            char ch=string.charAt(i);//charAt(int index),获取字符串index下标的字符
            System.out.print(ch+" ");
        }
        String str="abcdcef";
        int index1=str.indexOf('c');//indexOf(int ch),从头开始找字符串中的ch的阿斯克码值，找到就返回,没有返回-1
        System.out.println(index1);
        int index2=str.indexOf('c',3);//indexOf(int ch,int fromindex),从fromindex开始找字符串中的ch的阿斯克码值，找到就返回
        System.out.println(index2);
    }
    public static void main1(String[] args) {
        /**
         * 字符串String----一种类，有多个构造方法
         * 三种常用的字符串定义方式
         */
        String str1="abc";
        System.out.println(str1);

        String str2=new String("def");
        System.out.println(str2);

        char[] chars={'g','h','i'};
        String str3=new String(chars);
        System.out.println(str3);
    }
}
